#pragma once
#include "BindingHeader.hpp"

const CEGUI::colour getDefaultSelectionColour()
{
	return CEGUI::ListboxItem::DefaultSelectionColour;
}

const CEGUI::colour getDefaultTextColour()
{
	return CEGUI::ListboxTextItem::DefaultTextColour;
}

void Bind_ListboxTextItem(lua_State* l)
{
	using namespace luabind;
	using namespace CEGUI;

	module(l,"Cegui")
		[
			class_<ListboxItem>("ListboxTiem")			
			.property("TooltipText",&ListboxItem::getTooltipText,&ListboxItem::setTooltipText)
			.property("Text",&ListboxItem::getText,&ListboxItem::setText)
			.property("TextVisual",&ListboxItem::getTextVisual)
			.property("ID",&ListboxItem::getID,&ListboxItem::setID)
			.property("UserData",&ListboxItem::getUserData,&ListboxItem::setUserData)
			.property("Selected",&ListboxItem::isSelected,&ListboxItem::setSelected)
			.property("Disabled",&ListboxItem::isDisabled,&ListboxItem::setDisabled)
			.property("AutoDeleted",&ListboxItem::isAutoDeleted,&ListboxItem::setAutoDeleted)
			.property("OwnerWindow",&ListboxItem::getOwnerWindow,&ListboxItem::setOwnerWindow)
			.property("SelectionColours",&ListboxItem::getSelectionColours,(void(ListboxItem::*)(const ColourRect&))&ListboxItem::setSelectionColours)
			.def("setSelectionColours",(void(ListboxItem::*)(colour))&ListboxItem::setSelectionColours)
			.def("setSelectionColours",(void(ListboxItem::*)(colour,colour,colour,colour))&ListboxItem::setSelectionColours)
			.property("SelectionBrushImage",&ListboxItem::getSelectionBrushImage,(void(ListboxItem::*)(const Image*))&ListboxItem::setSelectionBrushImage)
			.def("setSelectionBrushImage",(void(ListboxItem::*)(const String&,const String&))&ListboxItem::setSelectionBrushImage)
			.property("PixelSize",&ListboxItem::getPixelSize)
			.def("draw",&ListboxItem::draw)
			.def(self < other<const ListboxItem&>())
			.scope
			[
				def("getDefaultSelectionColour",&getDefaultSelectionColour)
			]
			,
			class_<ListboxTextItem,ListboxItem>("ListboxTextItem")
			.def(constructor<const String&>())
			.def(constructor<const String&,uint,void*,bool,bool>())
			.property("Font",&ListboxTextItem::getFont,(void(ListboxTextItem::*)(CEGUI::Font*))&ListboxTextItem::setFont)
			.property("TextColours",&ListboxTextItem::getTextColours,(void(ListboxTextItem::*)(const ColourRect&))&ListboxTextItem::setTextColours)
			.property("Text",&ListboxTextItem::getText,&ListboxTextItem::setText)
			.property("PixelSize",&ListboxTextItem::getPixelSize)
			.def("setTextColours",(void(ListboxTextItem::*)(colour))&ListboxTextItem::setTextColours)
			.def("setTextColours",(void(ListboxTextItem::*)(colour,colour,colour,colour))&ListboxTextItem::setTextColours)
			.def("setFont",(void(ListboxTextItem::*)(const String&))&ListboxTextItem::setFont)
			.def("draw",&ListboxTextItem::draw)
			.CASTER(ListboxItem,ListboxTextItem)
			.scope
			[
				def("getDefaultTextColour",&getDefaultTextColour)
			]
		];
}